/**
 * @Title: ArticleUtil.java
 * @Package com.alex.cms.util
 * @Description: (描述该文件做什么)
 * @author Alex Lu
 * @date 2019年9月24日 上午9:09:10
 * @version V1.0
 */
package com.alex.cms.util;

import java.io.File;
import java.util.UUID;

import org.springframework.web.multipart.MultipartFile;

import com.alex.cms.domain.CmsArticle;
import com.alex.cms.web.constants.CMSConstants;
import com.alex.cms.web.form.ArticleForm;

/**
 * @ClassName: ArticleUtil
 * @Description: (描述这个类的作用)
 * @author Alex Lu
 * @date 2019年9月24日 上午9:09:10
 *
 */
public class ArticleUtil {
	public static CmsArticle updateArticle(ArticleForm articleForm, MultipartFile file, String coverPath, String uploadPath, Integer isDelCover) throws Exception {
		CmsArticle article = new CmsArticle();
		String fileName = "";
		/********* 文章修改的功能 *********/
		if (file.isEmpty()) {
			// 判断前端的cover参数是否有值
			if (articleForm.getCover() != null) {
				// isDelCover：是否删除，1为删除图片
				if (isDelCover == 1) {
					// 构造要被删除的封面图片文件对象
					File deleteFile = new File(coverPath);
					// java.io.File的判断方法，判断文件是否存在
					if (deleteFile.exists()) {
						// java.io.File的删除方法
						deleteFile.delete();
					}
				}
			}
			/******** 文章修改的功能 **********/
		} else {
			// 图片上传的功能
			// 获取图片文件的原始文件名
			String name = file.getOriginalFilename();
			// 获取文件的后缀名，比如：.jpg .txt....
			String suffix = name.substring(name.lastIndexOf("."));
			// 上传后的文件名，随机生成一个唯一的UUID
			fileName = UUID.randomUUID().toString() + suffix;
			// 文件保存路径，一般实际开发中的fastfds文件服务器指定路径
			File file2 = new File(uploadPath);
			// 判断文件路径是否存在，不存在重新创建
			if (!file2.exists()) {
				// java.io.File的创建文件路径
				file2.mkdir();
				// java.io.File的设置权限的方法，读写权限
				// file2.canExecute();
				// file2.canRead();
				// file2.canWrite();
			}
			File picFile = new File(uploadPath + fileName);
			// spring的上传功能
			file.transferTo(picFile);
		}
		// 文章编辑功能
		if (!file.isEmpty()) {
			// 如果没有提交封面图片，则设置该字段为null
			article.setPicture("/" + CMSConstants.FILE_SAVE_PATH + fileName);
		} else {
			if (articleForm.getCover() != null) {
				if (isDelCover == 1) {
					// 如果设置实体属性值为null，mybatis-plus将不会修改相应的字段
					article.setPicture("");
				} else {
					// 如果原来有封面，则使用原来的图片
					article.setPicture(articleForm.getCover());
				}
			} else {
				// 如果原来封面，则设置为null
				article.setPicture("");
			}
		}
		return article;
	}
}
